package annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解
 */
public class CustomAnnotation {
    //注解可以显示赋值,如果没有默认值,我们就必须给注解赋值
    //注解没有顺序可以随意写,没有给默认值的可以单给那个参数
    @MyAnhnotation02(name = "分界线", age = 21, schools = {"重庆建筑工程职业学院", "计算机应用技术"})
    public void test() {

    }

    //一个值的时候使用value可以给省略参数名不写
    @MyAnnotation03("2024-12-01,分界线")
    public void test02() {

    }
}

@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
@interface MyAnhnotation02 {
    //注解的参数类型+参数名+()
    // 给参数一个默认值为空
    String name() default "";

    int age();

    //如果默认值为-1,代表不存在,indexof,如果找不到就返回-1
    int id() default -1;

    String[] schools();
}

@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
@interface MyAnnotation03 {
    //只有一个值的情况下建议使用value命名
    String value();
}